<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>将数组排序的最少替换次数</title>
</head>
<body>
  <!-- 思路
  记录一个最小值，初始化为最后一个数，从后向前拆分 -->
  <script>
    function fn(nums) {
      let ans = 0;
      let min = nums[nums.length - 1];
      for (let i = nums.length - 2; i >= 0; i--) {
        if (nums[i] > min) {
          let cnt = Math.ceil(nums[i] / min); // 至少要拆成几个数字，才能保证他们都小于等于 min
          ans += cnt - 1; // 累加操作次数
          min = Math.floor(nums[i] / cnt); // 更新 min 为本轮拆分后最小的数字
        } else {
          min = nums[i];
        }
      }
      return ans;
    }
    console.log(fn([3, 9, 3]))
  </script>
</body>
</html>